package com.ruoyi.product.service.impl;

import java.util.Date;
import java.util.List;

import com.ruoyi.product.domain.ProductSpecTemplateDetail;
import com.ruoyi.product.mapper.ProductSpecMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.product.mapper.ProductSpecTemplateMapper;
import com.ruoyi.product.domain.ProductSpecTemplate;
import com.ruoyi.product.service.IProductSpecTemplateService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 规格属性模板Service业务层处理
 *
 * @date 2025-08-07
 */
@Service
public class ProductSpecTemplateServiceImpl implements IProductSpecTemplateService {
    @Autowired
    private ProductSpecTemplateMapper productSpecTemplateMapper;

    @Autowired
    private ProductSpecMapper productSpecMapper;

    @Override
    public ProductSpecTemplateDetail getProductSpecTemplateWithSpecsById(Long templateId) {
        return productSpecTemplateMapper.selectProductSpecTemplateWithSpecsById(templateId);
    }

    /**
     * 查询规格属性模板
     *
     * @param id 规格属性模板主键
     * @return 规格属性模板
     */
    @Override
    public ProductSpecTemplate selectProductSpecTemplateById(Long id) {
        ProductSpecTemplate template = productSpecTemplateMapper.selectProductSpecTemplateById(id);
        if (template == null) {
            return null;
        }

        return template;
    }

    /**
     * 查询规格属性模板列表
     *
     * @param productSpecTemplate 规格属性模板
     * @return 规格属性模板
     */
    @Override
    public List<ProductSpecTemplate> selectProductSpecTemplateList(ProductSpecTemplate productSpecTemplate) {
        return productSpecTemplateMapper.selectProductSpecTemplateList(productSpecTemplate);
    }

    /**
     * 新增规格属性模板
     *
     * @param productSpecTemplate 规格属性模板
     * @return 结果
     */
    @Override
    public int insertProductSpecTemplate(ProductSpecTemplate productSpecTemplate) {
        productSpecTemplate.setCreatedAt(new Date());
        int result = productSpecTemplateMapper.insertTemplate(productSpecTemplate);
        return result;
    }

    /**
     * 修改规格属性模板
     *
     * @param productSpecTemplate 规格属性模板
     * @return 结果
     */
    @Override
    @Transactional
    public int updateProductSpecTemplate(ProductSpecTemplate productSpecTemplate) {
        productSpecTemplate.setUpdatedAt(new Date());
        return productSpecTemplateMapper.updateProductSpecTemplate(productSpecTemplate);
    }

    /**
     * 批量删除规格属性模板
     *
     * @param ids 需要删除的规格属性模板主键
     * @return 结果
     */
    @Override
    @Transactional
    public int deleteProductSpecTemplateByIds(Long[] ids) {
        // 删除规格属性
        for(Long id : ids){
            productSpecMapper.deleteProductSpecById(id);
        }
        // 删除规格模板
        return productSpecTemplateMapper.deleteProductSpecTemplateByIds(ids);
    }

    /**
     * 删除规格属性模板信息
     *
     * @param id 规格属性模板主键
     * @return 结果
     */
    @Override
    public int deleteProductSpecTemplateById(Long id) {
        return productSpecTemplateMapper.deleteProductSpecTemplateById(id);
    }
}
